446. মসৃণ ভাজক

 

একটা ধনাত্বক পূর্ণসংখ্যা m কে আরেকটা পূর্ণসংখ্যা n এর একটা মসৃণ ভাজক বলা হবে যদি n  কে m দিয়ে ভাগ করলে যে ভাগফল আর ভাগশেষ পাওয়া যাবে তারা সমান হয়। n এর মান দেওয়া হবে। তার মসৃণ ভাজক এর সংখ্যা দেখাতে হবে।

 

ইনপুট

একটা ধনাত্বক পূর্ণসংখ্যা n (1 ≤ n ≤ 106)

 

আউটপুট

মসৃণ ভাজকের সংখ্যা।

 

উদাহরণ

ইনপুট

20

 

আউটপুট

2

 

 

সমাধান

প্রাথমিক সমস্যাগাণিতিক, সংখ্যাতত্ব

 

অ্যালগোরিদম পর্যালোচনা

যেহেতু n এর মান বেশি বড় নয়, তাই আমরা m এর সম্ভাব্য সব মান নিয়ে দেখতে পারি সেটা মসৃণ ভাজক কিনা (2 ≤ mn) মসৃণ ভাজক হবে তখনই যখন এই সমীকরণটা সত্য হবে বামপাশে ভাগফল এবং ডানপাশে ভাগশেষ বোঝাচ্ছে। যে যে মানের জন্যে সমীকরণটা সত্য, তাদের সংখ্যা গণনা করি।

 

উদাহরণ

n = 20 এর জন্যে ঠিক দুটো মসৃণ ভাজক পাওয়া জাবে: 9 আর 19, কেননা 20 / 9 = 20 mod 9 = 2 আর 20 / 19 = 20 mod 19 = 1.

 

অ্যালগোরিদম বাস্তবায়ন

ইনপুট নম্বর n নেওয়া হয়েছে। res হল সেই সব m এর সংখ্যা যেখানে n  কে m দিয়ে ভাগ করলে যে ভাগফল আর ভাগশেষ পাওয়া যাবে তারা সমান হয়।

 

res = 0;

scanf("%d",&n);

for(m = 2; m <= n; m++)

  if ((n / m) == (n % m)) res++;

 

res দেখাই।

 

printf("%d\n",res);